<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of sayHello
 *
 * @author sonia
 */
class encolaNotifTask extends sfBaseTask
{
  public function configure()
  {
    $this->namespace = 'encola';
    $this->name      = 'notificacion';
    
    $this->addOptions(array(
    new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'frontend'),
    new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
  ));
  }
 
  public function execute($arguments = array(), $options = array())
  {
      $today = date("Y-m-d"); 
      $databaseManager = new sfDatabaseManager($this->configuration);
      //$connection = $databaseManager->getDatabase()->getConnection();
      
      //Obtenemos los emails que deben enviarse hoy y no se han enviado aún.
      $notificaciones = Doctrine_Query::create()
                        ->from('Notificacion n1')
                        ->where('n1.fecha_lanzamiento = ?',$today)
                        ->andWhere('n1.is_validated != 1')
                        ->execute();
      
      $from = sfConfig::get('app_email_remiteMail');
      $nombre = sfConfig::get('app_email_remiteNombre');
      
      //Obtenemos el pie y el logotipo del envío
      //$imagen = sfConfig::get('app_email_logotipo');
      //$cabecera = "<div><img src=\"".$imagen."\" alt=\"Logotipo\" /></div>";     
      $nombre_fichero = sfConfig::get('app_email_fichfirma2');
      $fichero_texto = fopen ($nombre_fichero, "r");
      //obtenemos de una sola vez todo el contenido del fichero
      //OJO! Debido a filesize(), sólo funcionará con archivos de texto
      $pie = fread($fichero_texto, filesize($nombre_fichero));
      
      foreach ($notificaciones as $notificacion){          
            $to = $notificacion->getContacto()->getEmail();            
            $toNombre = $notificacion->getContacto()->getNombre()." ".$notificacion->getContacto()->getPrimerApellido();
            $subject = $notificacion->getAsunto();

            /* Establezco la vble idioma en función del idioma del cliente,
             * lo hago así para evitar errores por escribirlo de distinta manera (Mayúsculas, tildes, etc).
             */
             $idioma = strtoupper($notificacion->getContacto()->getIdioma());                   
             if ($idioma == "INGLéS"){                        
                  $nombre_fichero_lopd = sfConfig::get('app_email_fichpie2_EN');
             }
             else if ($idioma == "SUECO") {                        
                  $nombre_fichero_lopd = sfConfig::get('app_email_fichpie2_SW');
             }
             else{ //Si no hay idioma, considero el español por defecto                        
                  $nombre_fichero_lopd = sfConfig::get('app_email_fichpie2_ES');
             }
                    
             $fichero_lopd = fopen ($nombre_fichero_lopd, "r");      
             //obtenemos de una sola vez todo el contenido del fichero
             //OJO! Debido a filesize(), sólo funcionará con archivos de texto                
             $lopd = fread($fichero_lopd, filesize($nombre_fichero_lopd));            
               
             //Añadimos el pie y el logotipo al envío
             //$text = $cabecera.$notificacion->getTexto().$pie.$lopd;
             $text = $notificacion->getTexto().$pie.$lopd;
             
             //Creo el mailer con los datos
             $message = $this->getMailer()->compose();
             $message->setSubject($subject);
             $message->setTo(array ($to => $toNombre));
             $message->setFrom(array ($from => $nombre));                             
             $message->setBody($text, 'text/html');  
             
            // Añado los adjuntos si existen.
            
            if ($notificacion->getAdjunto1()!= NULL){
                $message->attach(Swift_Attachment::fromPath(sfConfig::get('app_email_attachments2').$notificacion->getAdjunto1())
                        ->setFileName($notificacion->getAdjuntoOriginal1())); //cambiamos el nombre del adjunto. VER CUAL PONER, ANALISIS!!!
            }
            if ($notificacion->getAdjunto2()!= NULL){
                $message->attach(Swift_Attachment::fromPath(sfConfig::get('app_email_attachments2').$notificacion->getAdjunto2())
                      ->setFileName($notificacion->getAdjuntoOriginal2()));
            }
            //Lo encolamos.            
            $this->getMailer()->send($message);               
            //Lo marcamos como enviado (aunque realmente aún no se ha enviado)
            $notificacion->is_validated= TRUE;
            //echo $notificacion;
            $notificacion->save(); 
      } 
  }
}

?>
